package com.zys.hotel_management.common;

/**
 * 统一的返回类，包含状态码、描述信息和泛型值。
 *
 * @param <T> 响应数据的类型
 */
public class Response<T> {
    private int code; // 状态码
    private String message; // 描述信息
    private T data; // 泛型值

    // 私有构造函数，通过静态方法创建实例
    private Response(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * 创建成功响应实例
     *
     * @param data 响应数据
     * @param <T>  响应数据的类型
     * @return 成功响应实例
     */
    public static <T> Response<T> success(T data) {
        return new Response<>(200, "成功", data);
    }

    /**
     * 创建失败响应实例
     *
     * @param code    错误状态码
     * @param message 错误描述信息
     * @param <T>     响应数据的类型
     * @return 失败响应实例
     */
    public static <T> Response<T> fail(int code, String message) {
        return new Response<>(code, message, null);
    }

    // Getter 方法
    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public T getData() {
        return data;
    }
}
